package cn.like.datasource;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Configuration;

/**
 * desc: 基本mybatis配置 <br>
 * details:
 * <pre>
 *    1. 配置了mybatis plus 分页插件
 *    2. 配置了自定义的id生成器策略
 *    3. 配置了自动填充功能
 * </pre>
 *
 * @author like 980650920@qq.com
 * @date 2021-07-07 20:55:03
 */
@Configuration
@Slf4j
public abstract class BaseMybatisConfiguration {

//	/**
//	 * 分页插件，自动识别数据库类型
//	 */
//	@Bean
//	public MybatisPlusInterceptor mybatisPlusInterceptor() {
//		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//		interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
//		return interceptor;
//	}
//
//	/**
//	 * 添加自定义id生成器
//	 */
//	@Bean
//	public MybatisPlusPropertiesCustomizer plusPropertiesCustomizer(@Autowired IdGenerator idGenerator) {
//		return plusProperties -> plusProperties.getGlobalConfig().setIdentifierGenerator(new IdentifierGenerator() {
//			@Override
//			public Number nextId(Object entity) {
//				return idGenerator.snowflakeId();
//			}
//
//			@Override
//			public String nextUUID(Object entity) {
//				return idGenerator.uuid();
//			}
//		});
//	}
//
//	/**
//	 * 自动填充功能
//	 */
//	@Bean
//	public MetaObjectHandler metaObjectHandler() {
//		return new MetaObjectHandler() {
//			@Override
//			public void insertFill(MetaObject metaObject) {
//				log.info("start insert fill ....");
//				this.strictInsertFill(metaObject, BaseEntity.CREATE_TIME, LocalDateTime.class, LocalDateTime.now());
//				this.strictInsertFill(metaObject, BaseEntity.CREATE_USER, Long.class, BaseContextHandler.getUserId());
//			}
//
//			@Override
//			public void updateFill(MetaObject metaObject) {
//				this.strictUpdateFill(metaObject, BaseEntity.UPDATE_TIME, LocalDateTime.class, LocalDateTime.now());
//				this.strictInsertFill(metaObject, BaseEntity.UPDATE_USER, Long.class, BaseContextHandler.getUserId());
//			}
//		};
//	}
//

}